const dropDownLoad = {
  // dom 节点对象
  el: {},
  // 滚动条返回顶部的依据
  heightArr: [undefined, undefined],

  /**
   * 获取 dom 节点
   * @param {string} name     节点别名
   * @param {string} el       节点对象
   */
  initEl: function (name, el) {
    if (typeof name !== 'string' && !name) {
      throw new Error('需传入节点别名')
    } else if (typeof el !== "string" && !el) {
      throw new Error('需传入节点class')
    }
    this.el[name] = document.querySelector(el);
  },

  /**
   * 绑定事件
   * @param {string} name         节点别名
   * @param {function} callback   回调处理函数
   */
  bindEvent: function (name, callback) {
    if (typeof name !== 'string' && !name) {
      throw new Error('需传入节点别名')
    } else if (typeof callback !== 'function' || !callback) {
      throw new Error('必须传入一个回调函数')
    }
    this.el[name].onscroll = () => {
      // 防止数据返回后滚动条在底部，再次触发滚动事件
      this.heightArr.shift();
      this.heightArr.push(this.el[name].scrollHeight)
      // 当这次 dom 高度小于 上次 dom 高度时，滚动条返回顶部，避免再次触发滚动事件
      if (this.heightArr[0] > this.heightArr[1]) this.el[name].scrollTop = 0;
      if ((this.el[name].scrollHeight - this.el[name].clientHeight) == this.el[name].scrollTop) {
        callback()
      }
    };
  },
}

export default dropDownLoad;
